{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 本章内容：\n",
    "- 统计学习的定义，研究对象和方法\n",
    "- 然后是监督学习，这是主要内容；\n",
    "- 接着是统计学习方法三要素:\n",
    "    - 模型\n",
    "    - 策略\n",
    "    - 算法\n",
    "- 介绍模型选择，包括正则化，交叉验证与学习的泛化能力\n",
    "- 介绍生成模型与判别模型\n",
    "- 最后介绍监督学习方法的应用\n",
    "    - 分类问题\n",
    "    - 标注问题\n",
    "    - 回归问题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.1 统计学习\n",
    "### 1 、统计学习特点\n",
    "统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测和分析，也称统计机器学习。\n",
    "- 统计学习以数据为研究对象\n",
    "- 目的是对数据进行预测和分析\n",
    "- 方法是构建模型并应用模型进行预测和分析  \n",
    "\n",
    "### 2、统计学习对象\n",
    "对象是数据，从数据出发，提取数据的特征，抽象出数据的模型，发现数据中的知识，再回到对数据的分析和预测中去。  \n",
    "统计学习关于数据的基本假设是同类数据具有一定的统计规律性，这是统计学习的前提。因此可以用随机变量描述数据的特征，用概率分布描述统计规律。    \n",
    "### 3、统计学习的目的\n",
    "统计学习用于对数据进行预测与分析，特别是对未知新数据进行预测与分析。   \n",
    "统计学习总的目的就是考虑学习什么样的模型和如何学习模型，以使得模型能对数据进行准确的预测和分析，同时也要考虑提高学习效率 。   \n",
    "### 4、统计学习的方法\n",
    "统计学习的方法是基于数据构建统计模型从而对数据进行预测和分析。  \n",
    "统计学习由监督学习，非监督学习，半监督学习，强化学习等组成。本书主要是监督学习。  \n",
    "监督学习的方法可以概况如下：\n",
    "- 从给定的、有限的、用于学习的训练数据集合出发，假设 ：  \n",
    "    - 假设数据是独立同分布的\n",
    "    - 假设要学习的模型属于摸个函数的集合，称为假设空间  \n",
    "- 应用某个评价准则，从假设空间选取一个最优的模型，使得它对已知训练数据和未知测试数据在给定评价准则中选取一个最优的预测。  \n",
    "- 最优模型的选取由算法实现。  \n",
    "\n",
    "这样，统计学习的方法就包括模型的假设空间，模型选择的准则，模型的学习算法，称为统计学习方法的三要素。简称模型，策略，算法。  \n",
    "具体步骤如下：\n",
    "1. 得到一个有限的训练数据集合；\n",
    "2. 确定包含所有可能的模型的假设空间，即学习模型的集合；\n",
    "3. 确定模型选择准则，即学习的策略；\n",
    "4. 实现求解最优模型的算法，即学习的算法；\n",
    "5. 通过学习方法选择最优模型；\n",
    "6. 利用学习的最优模型对数据进行预测与分析；"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.2 监督学习\n",
    "监督学习的任务是学习一个模型，使模型能够对任意给定的输入，对其相应的输出做一个好的预测。\n",
    "### 1.2.1 基本概念\n",
    "#### 1、输入空间、特征空间与输出空间\n",
    "输入空间是由特征向量表示，输入变量用$X$表示，输出变量用$Y$表示，输入，输出变量的值要用$x$，$y$，输入实例$x$的特征向量记为$$x=(x^{(1)}, x^{(2)}, ... , x^{(i)}, ... , x^{(n)})^T$$\n",
    "$x^{(i)}$表示$x$的第i个特征。注意$x^{(i)}$和$x_i$不同，$x_i$表示多个输入变量里的第i个。即$$x_i=(x^{(1)}_i, x^{(2)}_i , ... , x^{(n)}_i)$$\n",
    "监督学习从训练数据集合中学习模型，对测试数据进行预测，训练数据由输入与输出对组成，训练集通常表示为$$T={(x_1, y_1), (x_2, y_2), ... , (x_N, y_N)}$$\n",
    "输入输出对又称为样本或样本点。\n",
    "#### 2、联合概率分布\n",
    "监督学习假设输入和输出的随机变量$X$，$Y$遵循联合概率分布$P(X, Y)$，$P(X, Y)$表示联合概率分布函数，并且假设训练数据和测试数据是依联合概率分布$P(X, Y)$独立同分布，学习过程中假设这一概率分布存在，但是未知。\n",
    "#### 3、假设空间\n",
    "监督学习的目的在于找到由输入到输出的映射，这一映射由模型来表示，学习的目的就在于找到最好的这一的模型。模型属于由输入空间到输出空间的映射的集合，这个集合就是假设空间，它确定了学习的范围。\n",
    "### 1.2.2 问题的形式化\n",
    "监督学习利用训练数据集学习一个模型，再用模型对测试样本集进行预测。分为学习和预测两个过程。  \n",
    "首先给定一个训练数据集$$T={(x_1,y_1), (x_2,y_2), ... , (x_N,y_N)}.$$\n",
    "在学习过程中，学习系统通过给定的训练数据集，通过学习（训练）得到一个模型，表示为条件概率分布$\\hat{P}(Y|X)$，或决策函数$Y=\\hat{f}(X)$，表示映射关系。  \n",
    "在预测过程，预测系统对于测试样本集上的输入$x_{N+1}$，由模型$y_{N+1}=\\mathop{\\arg\\max}_{y_{N+1}}\\hat{P}(y_{N+1}|x_{N+1})$或$y_{N+1}=\\hat{f}(x_{N+1})$给出相应的输出$y_{N+1}$\n",
    "### 1.3.2 损失函数和风险函数\n",
    "损失函数是$f(X)$和$Y$的非负实数函数，记作$L(Y,f(X))$。  \n",
    "给定训练集，模型$f(X)$关于训练集的平均损失称为经验风险(empirical)，记作$R_{emp}$.$$R_{emp}(f)=\\frac{1}{N}\\sum_{i=1}^NL(y_i,f(x_i))$$\n",
    "但是，当样本容量很小时，经验风险最小化学习容易出现过拟合。因此可以采用结构风险最小化。  \n",
    "结构风险最小化(structual risk minimization SRM)定义是：$$R_{srm}(f)=\\frac{1}{N}\\sum_{i=1}^NL(y_i,f(x_i))+\\lambda J(f)$$  经验风险后面的叫做正则化项或罚项，其中$J(f)$是模型的复杂度。模型越复杂，$J(f)$越大；反之，$J(f)$越小。\n",
    "### 1.4.1 训练误差、测试误差和过拟合\n",
    "训练误差是$Y=f(X)$关于训练数据的平均损失，测试误差是$Y=f(X)$关于测试数据集的平均损失。  过拟合是指学习时选择的模型包含的参数过多，导致模型对于已知数据预测的很好，但对于未知数据预测的很差。  当模型的复杂度逐渐增大时，训练误差会逐渐减小并趋向于0；但是测试误差会先减小，到最小后又增大。当选择的模型复杂度过大就会出现过拟合。\n",
    "### 1.5 模型选择方法-正则化和交叉验证\n",
    "正则化就是采用结构风险最小化，正则化项可以采用不同的形式，比如参数向量的$L2$范式。  \n",
    "$S$折交叉验证：随机的把已知数据切分为$S$个互不相交的容量一样的子集；然后利用$S-1$个子集的数据训练模型，利用余下的数据作为测试集；将这一过程对可能的$S$种选择重复进行；最后选择$S$次评测中误差最小的模型。\n",
    "### 1.6 分类问题、回归问题、标注问题\n",
    "- 分类问题：输出变量$Y$取有限个离散值，各个离散值称为各个类；\n",
    "- 回归问题：输出变量$Y$取连续值，回归模型是从输入变量到输出变量的映射函数；\n",
    "- 标注问题：输入是一个观测序列，输出是一个标记或状态序列"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
